package com.alex.entity;

import lombok.Data;

import java.time.Year;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

@Data
public class TopicIdeaEntity {
    List<String> xData;
    List<String> yData;
    List<Object[]> data;

    /**
     * .flatMap(article -> article.getGene().stream()) 是一个流操作，它的作用是将每篇文章的基因列表转换为一个扁平化的流。
     *
     * 在这个操作中，article.getGene() 返回一个基因列表，然后使用 .stream() 方法将列表转换为流。接着，.flatMap() 方法将每个基因列表映射为一个流，并将这些流合并成一个扁平化的流。
     *
     * 举个例子来说明，假设有两篇文章，第一篇文章的基因列表是 ["gene1", "gene2"]，第二篇文章的基因列表是 ["gene3", "gene4"]。使用 .flatMap(article -> article.getGene().stream()) 操作后，得到的流就是 ["gene1", "gene2", "gene3", "gene4"]。
     *
     * 这个扁平化的流可以更方便地进行后续的操作，比如进行分组、计数等。在优化代码中，我们使用这个扁平化的流来统计每个基因的出现次数。
     *
     * 总结起来，.flatMap(article -> article.getGene().stream()) 的作用是将每篇文章的基因列表转换为一个扁平化的流，方便后续的操作。
     * @param args
     */

    /**
     * Function.identity() 可以根据元素本身的值进行分组。也就是说，它会将流中的元素直接作为分组的依据。
     * <p>
     * 除了使用 Function.identity()，你还可以根据元素的其他属性或者自定义的函数进行分组。例如，你可以提供一个 lambda 表达式或方法引用，根据元素的某个属性进行分组。
     * <p>
     * 举个例子，假设有一个包含学生对象的流，每个学生对象有属性 grade 表示年级。你可以使用以下方式根据年级进行分组：
     * <p>
     * stream.collect(Collectors.groupingBy(Student::getGrade));
     * 在这个例子中，Student::getGrade 是一个方法引用，表示根据学生对象的 getGrade() 方法的返回值进行分组。
     * <p>
     * 总结起来，Function.identity() 可以根据元素本身的值进行分组，而如果你希望根据元素的其他属性或自定义的函数进行分组，可以使用 lambda 表达式或方法引用来代替 Function.identity()。
     *
     * @param args
     */


}
